#include <stdio.h>
#include <string.h>


//                                                                          数组用变量（要支持C99的编译器）
// int main()
// {
//     int n = 0;
//     scanf("%d",&n);
//     int arr[n];
//     int i = 0;
//     for (i = 0; i < n; i++)
//     {
//         arr[i]=i;
//     }
//     for (i = 0; i < n; i++)
//     {
//         printf("%d ",arr[i]);
//     }
//     return 0;
// }

//                                                                              一维数组的使用
// int main()
// {
//     int arr[10];//定义数组有10个元素
//     arr[5] = 9;//给数字下标为5的元素赋值为9
//     printf("%d",arr[5]);
//     return 0;
// }


//                                                                               数组的访问
// int main()
// {
//     int arr[10];
//     int i = 0;
//     for ( i = 0; i < 10; i++)
//     {
//         arr[i] = i;
//     }
//     //顺序输出
//     for ( i = 0; i < 10; i++)
//     {
//         printf("%d ",arr[i]);
//     }
//     //逆序输出
//     for ( i = 9; i >= 0; i--)
//     {
//         printf("%d ",arr[i]);
//     }
    
//     return 0;
// }

//                                                                                斐波那契数列
// int main()
// {
// //    int arr[10] = {0,1,2,3,4,5,6,7,8,9};//                                          初始化
// //    int arr2[10] = {3,5,2};//                                                     不完全初始化
//     int fib[20] = {1,1};//                                                    表示前20个斐波那契数
//     int i = 0;
//     for (i = 0; i < 18; i++)
//     {
//         fib[i + 2] = fib[i + 1] + fib[i];
//     }
//     for (i = 0; i < 20; i++)
//     {
//         printf("%d ",fib[i]);
//     }
//     return 0;
// }

//                                                                  数组排序（两两相邻的元素进行比较）
// int main()
// {
//     int arr[]={10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
//     //确定冒泡排序的趟数
//     int i = 0;
//     for ( i = 0; i < 9; i++)
//     {
//         //一趟冒泡排序的过程
//         //确定一趟冒泡排序比较的对数
//         int j = 0;
//         for ( j = 0; j < 9-i; j++)
//         {
//             if (arr[j] > arr[j + 1])
//             {
//                 int tmp = arr[j];
//                 arr[j] = arr[j + 1];
//                 arr[j + 1] = tmp;
//             }
//         }
//     }
//     for (i = 0; i < 10; i++)
//     {
//         printf("%d ",arr[i]);
//     }
//     return 0;
// }
//                                                                               数组是连续存放的
//                                                                                    二维数组
// int main()
// {
// //   int arr[3][4];
//     int arr[10]= { 0 };
//     int i = 0;
//     for (i = 0; i < 10; i ++)
//     {
//         printf("&arr[%d] = %p\n",i,&arr[i]);
//     }
//     return 0;
// }
// int main()
// {
//     int arr[3][4];
//     int i = 0;
//     for (i = 0; i < 3; i++)
//     {
//         int j = 0;
//         for (j = 0; j < 4; j++)
//         {
//             arr[i][j] = 5;
//         }
//     }
// }
//                                                                  二维数组的初始化
// int main()
// {
//     int arr[3][4] = { {1, 2, 3, 4,}, {2, 3, 4, 5}, {3, 4, 5, 6} };
//     arr[1][2] = 1;
//     int arr1[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

//     return 0;
// }


// int main()
// {
//     int a[2][3] = {1, 2, 3, 4, 5, 6};
//     int b[3][2] = { 0 };
//     int i = 0;
//     int j = 0;
//     for (i = 0; i < 2; i++)
//     {
//         for (j = 0; j < 3; j++)
//         {
            
//             b[j][i] = a[i][j];
//         }
//     }
//     for (i = 0;  i< 3; i++)
//     {
//         for (j = 0; j < 2; j++)
//         {
//             printf("%5d",b[i][j]);
            
//         }
//         printf("\n");
//     }
//     return 0;
// }

//                                                                               求二维数组最大值
// int main()
// {
//     int arr[3][4] = { 0 };
//     int i = 0;
//     int j = 0;
//     for(i = 0; i< 3; i++)
//     {
//         for (j = 0; j < 4; j++)
//         {
//             scanf("%d",&arr[i][j]);
//         }
//     }
//     int max = arr[0][0];
//     int x = 0;
//     int y = 0;
//     for (i = 0; i < 3; i++)
//     {
//         for (j = 0; j< 4; j++)
//         {
//             if (arr[i][j] > max)
//             {
//                 max = arr[i][j];
//                 x = i;
//                 y = j;
//             }
//         }
//     }
//     printf("max= %d,下标是：%d %d\n",max,x,y);
//     return 0;
// }

//                                                                                  字符数组的引用
// int main()
// {
//     char ch[5] = {'a', 'b', 'c', 'd', 'e'};
//     int i = 0;
//     for (i = 0; i < 5; i ++)
//     {
//         printf("%c ",ch[i]);
//     }
//     return 0;
// }

// int main()
// {
//     char arr[]="bit";
//     char arr1[]={'b','i','t'};
//     char arr2[]={'b','i','t','\0'};                                       //字符串以“ \0 ”为结束标志
//     printf("%s\n",arr);
//     printf("%s\n",arr1);
//     printf("%s\n",arr2);
//     return 0;
// }

//                                                                                  求字符串长度
// int main()
// {
//     char arr[] = "abcdef";
//     int len = strlen(arr);
//     printf("%d\n",len);
//     return 0;
// }
//                                                                      要以字符串形式输出，必须包含“\0”
// int main()
// {
//     char arr[] = {'a', 'b', 'c', 'd', 'e', 'f', '\0'};
//     printf("%s\n",arr);
//     return 0;
// }

//                                                                                    puts函数
// int main()
// {
//     char arr[20] = {0};
//     scanf("%s",arr);
//     puts(arr);                                                                     //会自动换行
//     printf("----------------\n");
//     printf("%s\n",arr);
// }

//                                                                                   //get函数
// int main()
// {
//     char arr[20] = {0};
//     // scanf("%s",arr);
//     // puts(arr);                                                                //检测到空格结束
//     gets(arr);
//     puts(arr);
// }
//                                                                                   strcat函数
// int main()
// {
//     char arr1[20] = "hello";
//     char arr2[] = "world";
//     strcat(arr1,arr2);
//     puts(arr1);
// }
//                                                                               strcpy函数
// int main()
// {
//     char arr1[20] = {};
//     char arr2[] = "abcdef";
// //    char arr3[] = {'a', 'b', 'c'};//要有“\0”，才能copy(strcpy)
//     strcpy(arr1,arr2);  
//     printf("%s\n",arr1);
//     return 0;
// }
//                                                                                       strncpy
// int main()
// {
//     char arr1[20] = {};
//     char arr3[] = {'a', 'b', 'c'};//要有“\0”，才能copy(strcpy)
//     strncpy(arr1,arr3,3);
//     printf("%s\n",arr1);
//     return 0;
// }
//                                                                       字符串的比较：strcmp函数
// int main()
// {
//     char arr1[] = "abcdef";
//     char arr2[] = "abqwe";
//     //arr1 和 arr2数组
//     //在C语言中数组名是数组首元素的地址
//     int ret = strcmp(arr1,arr2);
//     printf("%d\n",ret);
//     return 0;
// }
//                                                                        求字符串长度：strlen函数
// int main()
// {
//     char arr1[] = {'a', 'b', 'c'};
//     int len = strlen("abc");
//     int ll = strlen(arr1);
//     printf("%d\n",len);                                                  //求的是实际长度不包括“\0”
//     printf("%d\n",ll);                                                 //随机数字（直到遇到“ \0 ”）
//     return 0;
// }
// int main()
// {
//     char arr[] = "abcdef";
//     printf("%d\n",strlen(arr));
// }
//                                                     strlen是无符号数字（size_t -----unsign int）
// int main()                             
// {
//     char arr1[] = "abc";
//     char arr2[] = "abcdef";
//     if ( strlen(arr1) - strlen(arr2) > 0)                        //无符号数字相减依旧是无符号数字
//     {
//         printf("hehe\n");
//     }
//     else
//     {
//         printf("haha\n");
//     }
// }
//                                                                        strlwr转小写函数
//                                                                        strupt转大写函数
// int main()
// {
//     char arr[] = "AbCd";
//     char arr1[] = "efGG";
//     strlwr(arr);
//     strupr(arr1);
//     printf("%s\n",arr);
//     printf("%s\n",arr1);
//     return 0;
// }
//                                                                             统计一句话中的单词
// int main()
// {
//     char arr[1024] = {0};
//     gets(arr);
//     int word = 0;//用来标识是否出现一个新单词，如果word=0,表示不是单词，如果word=1,表示是单词
//     int num = 0;//计数，计算字符串中的单词个数
//     int i = 0;
//     for (i = 0; arr[i] != '\0'; i++)
//     {
//         if (arr[i] == ' ')
//         {
//             word = 0;
//         }
//         else if (word == 0)
//         {
//             word = 1;
//             num++;
//         }
//     }
//     printf("num = %d\n",num);
//     return 0;
// }
//                                                                     比较三个数组，输出最大的数组
// int main()
// {
//     char arr[3][100] = {0};
//     int i = 0;
//     char max_string[100] = {0};
//     for ( i = 0; i < 3; i++)
//     {
//         gets(arr[i]);
//     }
//     //让第一行和第二行比较，找出较大的一行，存放在max_string
//     if (strcmp(arr[0],arr[1]) > 0)
//     {
//         strcpy(max_string,arr[0]);
//     }
//     else
//     {
//         strcpy(max_string,arr[1]);
//     }
//     //让max_string和第三行比较，找出较大的存放在max_string
//     if (strcmp(max_string,arr[2]) < 0)
//     {
//         strcpy(max_string,arr[2]);
//     }
//     printf("%s\n",max_string);
//     return 0;
// }
//                                                                           水瓶换算
// int main()
// {
//     int money = 0;
//     int total = 0;
//     int empty = 0;
//     scanf("%d",&money);
//     total = money;
//     empty = money;
//     while (empty >= 2)
//     {
//         total += empty / 2;
//         empty = empty /2 + empty % 2;
//     }
//     printf("%d ",total);
//     return 0;
// }
//                                                                        调整数组使奇数全位于偶数前面
// int main()
// {
//     int arr[10] = {0};
//     int i = 0;
//     int sz = sizeof(arr) / sizeof(arr[0]);
//     for (i = 0; i < sz; i ++)
//     {
//         scanf("%d",&arr[i]);
//     }
//     //调整
//     int tmp[10] = { 0 };
//     int j = 0;
//     //处理奇数
//     for (i = 0; i < sz; i++)
//     {
//         if (arr[i] % 2 == 1)
//         {
//             tmp[j] = arr[i];
//             j++;
//         }
//     }
//     //处理偶数
//     for (i = 0; i < sz; i++)
//     {
//         if (arr[i] % 2 == 0)
//         {
//             tmp[j] = arr[i];
//             j++;
//         }
//     }
//     for (i = 0; i < sz; i++)
//     {
//         arr[i] = tmp[i];
//     }
//     for ( i = 0; i < sz; i++)
//     {
//         printf("%d ",arr[i]);
//     }
//     return 0;
// }

//                                                                       字符串左旋（字符串旋转问题）
// int main()
// {
//     char arr[20] = "";
//     scanf("%s",&arr);
//     int k = 0;
//     scanf("%d",&k);
//     int i = 0;
//     int len = strlen(arr);
//     for (i = 0; i < k; i++)
//     {
//         //左旋转1个字符
//         char tmp = arr[0];
//         int j = 0;
//         for (j = 0; j < len-1;j++)
//         {
//             arr[j] = arr[j + 1];
//         }
//         arr[len - 1] = tmp;
//     }
//     printf("%s\n",arr);
//     return 0;
// }
//                                                                                    方法二
// int main()
// {
//     char arr[20] = "";
//     scanf("%s",&arr);
//     int k = 0;
//     scanf("%d",&k);
//     int len = strlen(arr);
//     int left = 0;
//     int right = k - 1;
//     while (left < right)
//     {
//         char tmp = arr[left];
//         arr[left] = arr[right];
//         arr[right] = tmp;
//         left++;
//         right--;
//     }
//     left = k;
//     right = len - 1;
//     while (left < right)
//     {
//         char tmp = arr[left];
//         arr[left] = arr[right];
//         arr[right] = tmp;
//         left++;
//         right--;
//     }
//     left = 0;
//     right = len - 1;
//     while (left < right)
//     {
//         char tmp = arr[left];
//         arr[left] = arr[right];
//         arr[right] = tmp;
//         left++;
//         right--;
//     }
//     printf("%s\n",arr);
//     return 0;
// }

//                                                          判断一个字符串是否为另一个字符串旋转之后的结果
int main()
{
    char arr1[20] = "abcdef";
    char arr2[20] = "cdefab";
    int i = 0;
    int len = strlen(arr1);
    for (i = 0; i < len; i ++)
    {
        char tmp = arr1[0];
        int j = 0;
        for (j = 0; j < len - 1; j++)
        {
            arr1[j] = arr1[j + 1];
        }
        arr1[len - 1] = tmp;
        if (strcmp(arr1,arr2) == 0)
        {
            printf("arr2是arr1旋转之后的字符串");
            break;
        }
    }
    if (i == len)
    {
        printf("arr2不是arr1旋转之后的字符串");
    }
    return 0;
}